package com.maple.utils.widget.update

import android.content.Context
import com.blankj.utilcode.util.PathUtils
import com.xuexiang.xupdate.XUpdate
import com.xuexiang.xupdate.service.OnFileDownloadListener
import java.io.File


class XUpdateDownloader {

    fun newBuild(context: Context,downloadUrl: String,listener: XUpdateDownloaderListener) {
        XUpdate.newBuild(context)
            .apkCacheDir(PathUtils.getExternalAppCachePath()) //设置下载缓存的根目录
            .build()
            .download(downloadUrl, object : OnFileDownloadListener {
                //设置下载的地址和下载的监听
                override fun onStart() {
                    listener.onStart()
                }

                override fun onProgress(progress: Float, total: Long) {
                    listener.onProgress(progress,total)
                }

                override fun onCompleted(file: File?): Boolean {
                    return listener.onCompleted(file)
                }

                override fun onError(throwable: Throwable?) {
                    listener.onError(throwable)
                }
            })
    }

    interface XUpdateDownloaderListener{
        fun onStart()

        /**
         * 更新进度
         *
         * @param progress 进度0.00 - 0.50  - 1.00
         * @param total    文件总大小 单位字节
         */
        fun onProgress(progress: Float?, total: Long?)

        /**
         * 下载完毕
         *
         * @param file 下载好的文件
         * @return 下载完毕后是否打开文件进行安装<br></br>`true` ：安装<br></br>`false` ：不安装
         */
        fun onCompleted(file: File?): Boolean

        /**
         * 错误回调
         *
         * @param throwable 错误提示
         */
        fun onError(throwable: Throwable?)
    }
}